package org.summer.generator.writer;

import org.summer.generator.channel.FileWriterChannel;
import org.summer.generator.config.ProjectConfig;
import org.summer.generator.config.WriterConfig;
import org.summer.generator.vo.Table;

/**
 * 文件写入接口，写入指定代码到指定java文件，或则资源文件
 */
public interface FileWriter {
    /**
     * 设置文件写入通道到文件写入类
     * @param channel 文件写入通道
     */
    void setChannel(FileWriterChannel channel);

    /**
     * 设置表格信息类
     */
    void setTable(Table table);

    /**
     * 设置项目配置信息
     */
    void setProjectConfig(ProjectConfig config);

    /**
     * 设置写入配置信息
     */
    void setWriterConfig(WriterConfig config);

    /**
     * 执行文件写入操作，系统调用此方法将代码写入到项目目录中
     */
    void execute();
}
